A time-triggered data processing architecture is a network of embedded data processing nodes interconnected through a bus. The nodes share a common notion of time and execute tasks according to a schedule. A node comprises a data processing unit that receives and/or transmits data via the bus, and possibly also comprises an actuator or a sensor governed by the data processing unit.
An example of such an architecture is a FlexRay system, especially developed for automotive applications. The FlexRay Consortium is an alliance of automotive, semiconductor and electronic systems manufacturers, working together to develop a deterministic and fault-tolerant bus system with high data rates for advanced automotive control applications. NXP (founded by Philips Electronics) is a member of this Consortium.
FIG. 1 is a block diagram of a FlexRay system 100. System 100 comprises a bus 102 that interconnects a plurality of nodes 104, 106, 108, . . . , and 110. Each of nodes 104-110 has, e.g., a sensor, an actuator, or a data processing capability. Control data for the actuators, sensor data from the sensors and system level control data for the nodes are communicated via bus 102. Bus 102 has been drawn as comprising channels 112 and 114, but this is merely by way of example. Bus 102 may consist of a single channel or of three or more channels, depending on the application of system 100 in operational use. Two or more communication channels enable to increase the communication bandwidth and/or reliability of the communication. Nodes 104-110 have a uniform configuration as far as data communication via bus 102 is concerned. Node 104 is discussed in further detail as being representative of nodes 104-110. Node 104 comprises a host processor 116, a communication controller 118, and a bus driver 120. Processor 116 supplies data transmitted via bus 102 under control of controller 118, and/or processes data received via bus 102 and controller 118. Driver 120 connects controller 118 to bus 102. Processor 116 or controller 118 further control the time slots during which node 104 has access to bus 102 in the communication protocol used.
At the core of the FlexRay system is the FlexRay communications protocol. The protocol provides flexibility and determinism by combining a scalable static and dynamic message transmission, incorporating the advantages of familiar synchronous and asynchronous protocols.
FIG. 2 is a diagram 200 illustrating some aspects of the FlexRay protocol. The protocol's schedule 202 per node, e.g., node 104, uses the concept of communication slots and communication cycles. The temporal configuration of schedule 202 is considered a concatenation of a plurality of sequences, among which only sequence 204 and sequence 206 have been labeled in FIG. 1 in order to not obscure the drawing. Each sequence is made up of a series of cycles. For example, sequence 204 is made up of a series of cycles, such as cycles 208 and 210. In FlexRay, the number of cycles per sequence is set to 64. Each cycle is made up of a succession of time slots (or: communication slots). FIG. 1 illustrates this for cycle 208 that includes slots 212 and 214. In FlexRay, each cycle consists of up to 2047 slots. A communication slot is the time period allocated to a single communication event per bus channel available to this node. A communication cycle defines a recurring time window. The duration of the cycle is fixed when the network becomes configured. The number of cycles in a sequence of cycles, before the sequence repeats itself, is also fixed when the system becomes configured. The time window, which is defined by the communication cycle, can be divided into a static segment and a dynamic segment. The length of these segments is also defined in the configuration. The purpose of the static segment is to provide a time window for scheduling a number of time-triggered messages. This part of the communication cycle is reserved for the synchronous communication, which guarantees a specified frame latency and jitter through fault-tolerant clock synchronization. The messages which should be transferred in the static segment must be configured before starting the communication, and the maximal amount of the data transferred in the static segment cannot exceed the duration of the static segment. In the dynamic segment of the communication cycle, each node may transfer event-triggered messages.
In a single cycle, multiple slots (2 to 2047 slots, depending on the network configuration) are used for communication among the nodes. A specific slot in a cycle is identified by a specific “SlotID” value in the range 1 to 2047 and the slots become available to the node in the order of their “SlotID” values: A particular cycle is identified by a particular “CycleCount” value in the range 0 to 63. The number of cycles is fixed at 64 (the cycle succeeding cycle 63 will be cycle 0) in this example. As a result, an addressable slot occurring in only a single one of the cycles is repeated after every 64 cycles.
Referring now to FIG. 3, basically all possible combinations of SlotIDs and CycleCounts can be described through a communication-matrix 300. That is, the activity of a node per node-slot and per node-cycle can be mapped on two-dimensional matrix 300 of rows and columns, wherein a specific row identifies a specific slot and wherein a particular column identifies a particular cycle. For a specific node in network 100 each intersection of row and column identifies the associated activity that has been scheduled for the node in that particular slot in that particular cycle. Examples of activities are “Transmit from a specific buffer”, “Receive into a specific buffer”, “Ignore”, etc. The different usage of the same slot in different cycles is known as “slot multiplexing” (variations in Rx and Tx) and “cycle multiplexing” (variations in message buffers). For an example, see FIG. 1.
For a description of an example of a Flexray system see, e.g., US patent application publication 20050254518, herein incorporated by reference.